﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdlib.h>
//#include<stdio.h>
//#include"test.h"
////namespace test1//自定义命名空间
////{
////	int rand = 2;
////}
////
////namespace test2
////{
////	int a = 2;
////	namespace test3//命名空间嵌套定义
////	{
////		int b = 3;
////	}
////}
////int main()
////{
////	printf("%d\n", test1::rand);//指定命名空间访问
////	printf("%d\n", test2::a);
////	printf("%d\n", test2::test3::b);
////	printf("%d\n", test1::tmp);
////	return 0;
////}
//
//
////namespace test2
////{
////	int a = 2;
////	namespace test3//命名空间嵌套定义
////	{
////		int b = 3;
////	}
////}
////using test2::a;//将命名空间中某个成员展开
////int main()
////{
////	printf("%d\n", a);//后面就可以直接访问
////
////	printf("%d\n", test2::test3::b);//没有展开的成员还需要指定访问
////	return 0;
////}
//
////namespace test2
////{
////	int a = 2;
////	namespace test3//命名空间嵌套定义
////	{
////		int b = 3;
////	}
////}
////using namespace test2;//将命名空间全部展开
////int main()
////{
////	printf("%d\n", a);//命名空间的成员都可以直接访问
////	printf("%d\n", test3::b);
////	return 0;
////}
//
//#if 0
//#include <iostream>
//using namespace std;
//// 全缺省
//
//void Func1(int a = 10, int b = 20, int c = 30)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl << endl;
//}
//
//int main()
//{
//	Func1();//全缺省参数，调用时可以不给实参
//	Func1(1);
//	Func1(1, 2);
//	Func1(1, 2, 3);
//	return 0;
//}
//
//#endif
//
//#if 0
//
//#include <iostream>
//using namespace std;
//
//// 半缺省
//
//void Func2(int a, int b = 10, int c = 20)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl << endl;
//}
//
//int main()
//{
//	//Func2();   //半缺省参数不能不给实参
//	Func2(100);
//	Func2(100, 200);
//	Func2(100, 200, 300);
//	return 0;
//}
//#endif
//
//#if 1
//
//#include <iostream>
//using namespace std;
//
//void Func2(int a, int b = 10, int c = 20);
////声明和定义分离时，只在声明给出缺省值
//
//void Func2(int a, int b , int c )
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl << endl;
//}
//
//int main()
//{
//	Func2(100);
//	Func2(100, 200);
//	Func2(100, 200, 300);
//	return 0;
//}
//#endif

//#include<iostream>
//using namespace std;
//
//class Date
//{
//public:
//	void Init(int year = 2000, int month = 1, int day = 1)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//int main()
//{
//	/*int a = 0;
//	cout << a << endl;
//	cout << "hello world\n";
//	cin >> a;
//	cout << a << endl;*/
//
//	Date d1;
//	d1.Init(2024, 6, 30);
//	return 0;
//}

//#include<iostream>
//using namespace std;
//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//private:
//	// 这⾥只是声明，没有开空间
//
//	int _year;
//	int _month;
//	int _day;
//};

//#include<iostream>
//#include<assert.h>
//using namespace std;
//typedef int STDataType;
//class Stack
//{
//public:
//	// 成员函数
//
//	void Init(int n = 4)
//	{
//		_a = (STDataType*)malloc(sizeof(STDataType) * n);
//		if (nullptr == _a)
//		{
//			perror("malloc申请空间失败");
//			return;
//		}
//		_capacity = n;
//		_top = 0;
//	}
//	void Push(STDataType x)
//	{
//		if (_top == _capacity)
//		{
//			int newcapacity = _capacity * 2;
//			STDataType* tmp = (STDataType*)realloc(_a, newcapacity *
//				sizeof(STDataType));
//			if (tmp == NULL)
//			{
//				perror("realloc fail");
//				return;
//			}
//			_a = tmp;
//			_capacity = newcapacity;
//		}
//		_a[_top++] = x;
//	}
//	void Pop()
//	{
//		assert(_top > 0);
//		--_top;
//	}
//	bool Empty()
//	{
//		return _top == 0;
//	}
//	int Top()
//	{
//		assert(_top > 0);
//		return _a[_top - 1];
//	}
//	void Destroy()
//	{
//		free(_a);
//		_a = nullptr;
//		_top = _capacity = 0;
//	}
//private:
//	// 成员变量
//
//	STDataType* _a;
//	size_t _capacity;
//	size_t _top;
//};


//#include<iostream>
//using namespace std;
//class Date
//{
//public:
//	// 1.⽆参构造函数
//
//	Date()
//	{
//		_year = 1;
//		_month = 1;
//		_day = 1;
//	}
//	// 2.带参构造函数
//
//	Date(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	// 3.全缺省构造函数
//
//	/*Date(int year = 1, int month = 1, int day = 1)
//	{
//	_year = year;
//	_month = month;
//	_day = day;
//	}*/
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//int main()
//{
//	// 如果留下三个构造中的第⼆个带参构造，第⼀个和第三个注释掉
//
//	// 编译报错：error C2512: “Date”: 没有合适的默认构造函数可⽤
//
//	Date d1; // 调⽤默认构造函数
//
//	Date d2(2025, 1, 1); // 调⽤带参的构造函数
//
//	// 注意：如果通过⽆参构造函数创建对象时，对象后⾯不⽤跟括号，否则编译器⽆法
//
//	// 区分这⾥是函数声明还是实例化对象
//
//	// warning C4930: “Date d3(void)”: 未调⽤原型函数(是否是有意⽤变量定义的?)
//	Date d3();
//	d1.Print();
//	d2.Print();
//	return 0;
//}



#include<iostream>
using namespace std;
typedef int STDataType;
class Stack
{
public:
	Stack(int n = 4)
	{
		_a = (STDataType*)malloc(sizeof(STDataType) * n);
		if (nullptr == _a)
		{
			perror("malloc申请空间失败");
			return;
		}
		_capacity = n;
		_top = 0;
	}
	// ...
private:
	STDataType* _a;
	size_t _capacity;
	size_t _top;
};
// 两个Stack实现队列

class MyQueue
{
public:
	//编译器默认⽣成MyQueue的构造函数调⽤了Stack的构造，完成了两个成员的初始化

private:
	Stack pushst;
	Stack popst;
};
int main()
{
	MyQueue mq;
	return 0;
}


